PROP_FORMATS,
PROP_SELECTED_ACTION,
PROP_ACTIONS,
+ PROP_SURFACE,
N_PROPERTIES
};
typedef struct _GdkDragPrivate GdkDragPrivate;
struct _GdkDragPrivate {
- GdkSurface *source_surface;
+ GdkSurface *surface;
GdkDisplay *display;
GdkDevice *device;
}
break;
+ case PROP_SURFACE:
+ priv->surface = g_value_dup_object (value);
+ g_assert (priv->surface != NULL);
+ break;
+
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec);
break;
g_value_set_flags (value, priv->actions);
break;
+ case PROP_SURFACE:
+ g_value_set_object (value, priv->surface);
+ break;
+
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec);
break;
g_clear_object (&priv->content);
g_clear_pointer (&priv->formats, gdk_content_formats_unref);
- if (priv->source_surface)
- g_object_unref (priv->source_surface);
+ g_clear_object (&priv->surface);
G_OBJECT_CLASS (gdk_drag_parent_class)->finalize (object);
}
G_PARAM_READWRITE |
G_PARAM_STATIC_STRINGS |
G_PARAM_EXPLICIT_NOTIFY);
+
+ properties[PROP_SURFACE] =
+ g_param_spec_object ("surface",
+ "Surface",
+ "The surface where the drag originates",
+ GDK_TYPE_SURFACE,
+ G_PARAM_READWRITE |
+ G_PARAM_CONSTRUCT_ONLY |
+ G_PARAM_STATIC_STRINGS |
+ G_PARAM_EXPLICIT_NOTIFY);
+
/**
* GdkDrag::cancel:
* @drag: The object on which the signal is emitted